Webs estáticas (BORRADOR)

En este momento (diciembre 2013) la asociación proporciona algunos servicios en webs estáticas. Es decir, webs que se generan en la máquina del equipo de administración y se suben al servidor HTTP como ficheros 100% estáticos.

Las webs son:

Algunas ventajas de las webs estáticas:

  • No hay ningún tipo de contenido activo en el servidor, así que no se depende de ninguna tecnología especial allí.
  • La migración a cualquier otro hospedaje web es trivial.
  • Si todo el contenido es estático, es trivial hacer mirror del mismo, cachearlo, backups, etc.
  • Como toda la inteligencia está en el proceso de generación automática de la web, que se realiza en las máquinas del grupo de administración, se puede usar ahí cualquier tecnología que se desee, sin necesidad de ningún soporte posterior en el servidor.
  • La web puede estar perfectamente conservada en un control de versiones.

Tecnología

Sin perjuicio de alternativas, la tecnología de web estática empleada ahora mismo es Nikola. El formato de los documentos es ReST. Esto permite una edición sencilla pero capaz, compatibilidad con sistemas de control de versiones y la migración simple a otras tecnologías web.

Instalación y descarga inicial

Una vez instalado Nikola y todas sus dependencias (aconsejamos utilizar un virtualenv), sencillamente basta con clonar los repositorios Mercurial que deseemos.

Modificación

El contenido en sí son ficheros ReST que se pueden editar con cualquier procesador de texto. Se recomienda seguir la estructura de los ficheros ya existentes, por consistencia y por la probable inclusion futura de automatismos.

Existen otros ficheros, como plantillas, reglas de estilo, javascript, etc., que no deberían modificarse de forma habitual. Para estos casos es buena idea leer la documentación de Nikola.

Regeneración de la web en local

Nota

Si has instalado Nikola dentro de un virtualenv, actívalo primero.

Una vez editado el contenido, para regenerar el sitio web se ejecutan los siguientes comandos:

$ nikola build

Este comando reconstruye la web en local. El proceso es bastante rápido porque solo se regeneran los ficheros que han cambiado, y sus dependencias.

Si deseamos ver cómo queda la web sin subirla al servidor hacemos:

$ nikola serve

y lanzamos un navegador web a http://127.0.0.1:8000/.

Subida al servidor

En este momento la subida al servidor web la realiza Jesús Cea, usando RSYNC. Los documentos a subir están en el directorio output. Esto puede cambiar en el futuro, en función de la dinámica y las necesidades del proyecto.

MIRROR!

Se puede hacer mirror de forma trivial de una web estática, pero es preferible notificarlo a la administración para poder hacer un balanceo de DNS y que las actualizaciones se propaguen lo antes posible. En ese contexto solo existen dos complicaciones: asegurarse de que el mirror funciona y está actualizado, y la centralización de logs de acceso.

En este momento no se ha definido un sistema de mirror para estas webs. Se trata de algo a evaluar en el futuro.

Actualización de tecnología

En caso de actualizarse Nikola y/o sus dependencias, es conveniente comprobar que todo está funcionando correctamente y que no se producen artifacts y regresiones. La forma más sencillo de asegurarse consiste en generar dos versiones de la web, una antes de actualizar y otra después, y compararlas. La salida no será idéntica, debido a la propia actualización, pero esto permitirá verificar que todo se reconstruye apropiadamente con la versión nueva:

$ nikola build                # Antes de actualizar
$ mv output output.OLD        # Hacemos una copia de la web actual
$ (XXXX)                      # Actualizamos Nikola y sus dependencias
$ nikola build                # Regeneramos la web por completo
$ diff -ru output.OLD output  # Comprobamos los cambios

Por una cuestión operativa, se recomienda que todo el equipo de administración emplee la misma versión de Nikola y sus dependencias. De esta forma los resultados son reproducibles y equivalentes, independientemente de qué administrador haya regenerado la web.